package thirdpart.wechat.rmi;

import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.lab.jiang.Config;
import org.lab.jiang.WechatRecordAnalyzer;
import org.shirdrn.document.preprocessing.api.Term;

import util.ReflectionUtils;

public class WechatContentFilter {
	WechatRecordAnalyzer wra = ReflectionUtils.newInstance(
			Config.DocumentAnalyzerClass, WechatRecordAnalyzer.class);

	private static Pattern[] patterns = null;
	{
		patterns = new Pattern[rule.length];
		for (int i = 0; i < patterns.length; i++) {
			rule[i] = "(?<=[,\\.，。\\!！\\s])"+rule[i]+"[,\\.。\\!！]";
			patterns[i] = Pattern.compile(rule[i]);// 创建 Pattern 对象
		}
	}

	public Map<String, Term> segment(String document) {
		// TODO Auto-generated method stub
		Map<String, Term> map = wra.getWordMap(document);
		return map;
	}

	/**
	 * 返回过滤后的文本
	 */
	
	public static String[] filterNoise1(String contentString) {
		String sentences = "";
		String delete = "";
		try {
			String[] parts = contentString.split("，|。|！|\\,|\\.");
			Matcher m = null;
			for (int j = 0; j < parts.length; j++) {// 文本
				boolean flag = false;
				parts[j] = parts[j].replaceAll("[\\\\r\\\\n\\s。]", "");
				if (parts[j].length() > 0) {
					for (int i = 0; i < patterns.length; i++) {// 模式
						m = patterns[i].matcher(parts[j]);
						if (m.find()) {
							flag = true;
							break;
						}
					}
					if (flag == false) {
						sentences = sentences + parts[j] + "。";
					}else{
						delete = delete + parts[j] + "\t";
					}
				} else {
					continue;
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return new String[]{sentences, delete};

	}
	
	
	
	public static String[] filterNoise(String contentString) {
		String delete = "";
		try {
			Matcher m = null;
			for (int i = 0; i < patterns.length; i++) {// 模式
				m = patterns[i].matcher(contentString);
				if (m.find()) {
					contentString = contentString.replaceAll(rule[i], "");
					delete = delete + m.group(0);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return new String[]{contentString, delete};

	}

	public final static String rule[] = new String[] {
			"点击?[上|下|左|右]?[方|面]?(.*)?(可以)?(免费)?订[阅|购]",
			"(?<=[,\\.，。\\!！"
			+ "s])免费订阅我们[,\\.。\\!！]", 
			"欢迎订阅",
			"阅读原文",
			"(完全)?免费.*请?放心关注",
			"官方订阅号", 
			"长按[上|下|左|右]图.{1,}识别图中二维码", 
			"二维码扫描",
			"(长按|扫描关注|扫|扫描|关注)[上|下|左|右]?[方|面]?二维码",
			"微信扫一扫[上|下|左|右][方|面]的?[\"|“|‘](.*)?[\"|”|’]二维码",
			"(长按|点击)([上|下|左|右]侧)?(图片|二维码)并?(识别)?",
			"(长按|点击)([上|下|左|右]侧)?并?(识别)?.*(二维码)(关注)?",
			"长按(指纹|二维码)[,|，]?(点选|选择)[(|（|\"|“|‘]识别图中二维码[)|）\"|”|’]",
			"将二维码保存在手机，打开“扫一扫”，右上角“相册”，打开选取刚刚保存的二维码照片即可",
			"长按(图片|识别|图中|下方|以上微信号可)?(二维码|复制)(关注)?", "微信号保存二维码\\s+扫一扫关注公众号",
			"欢迎扫描二维码.*订阅号", "扫描手机银行二维码", "公众号(.*)?关注", "微信账?号[：|:|\\s+]?[0-9]",
			"微信号/QQ号[：|:]?[0-9]+", "微信平台预约[：|:](.*)?", "关于?注?[a-zA-Z0-9]+公众微信号",
			"关注微信(公共)?(平台)?[：|:](.*)?微信号是?[：|:](.*)?QQ号是?[：|:]?[0-9]+",
			"微信号[：|:]\\s*[a-zA-Z0-9_]+公众号ID[：|:]\\s*[a-zA-Z0-9]+",
			"(加|认证)?(公[众|眾])?微信(公[众|眾])?[號|号]?[：|:]?(\\s*)?[\\(|\\（]?[a-zA-Z0-9]+[\\)|\\）]?",
			"请加.*微信.*", "此微信(已经)?改变了?", "热门微信(公共)?账?号?推荐",
			"(今天)?(小编)?给?大家推荐.*(微信公众号)+", "有人用微信聊天.*学习.*成长",
			"(推荐.*|加.*)(微|薇|V)信", "请?(一键|免费)?关注.*(微信号|公众号)",
			"(推广合作联系|课程咨询|(特别)?提醒|活动咨询电话|联系(人|方式)|媒体支持|推广请联系微信私号|微信搜索ID\\s|公众号)(:|：)",
			"(关注|查找)?(小编)?(QQ|微信|公众账)号?[：|:|,|，]", "(长按|识别|扫一扫).*关注.*(订阅|公众)号",
			"关注微信(公共)?(平台)?[：|:][a-zA-Z0-9]+", "关注[a-zA-Z0-9]+公众微信号",
			"微信搜索ID☞[：|:]", "一起关注@", "[歡|欢]迎[订|訂][閱|阅][關|关]注",
			"请点击最[下|上]方[\"|“]关注[\"|”]", "(加我关注就对了|请关注我[吧|呢])",
			"(赶紧|抓紧|赶快|速度)*关注我", "(如果)?喜欢[就]?关注我们吧", "点击?阅读原文",
			"(推荐|延伸|拓展)阅读[：|:]?", "更多精彩(.*)?请?点击?(.*)? 阅读原文",
			"[点|點|猛|戳][击|擊|戳]?开?[上|下|左|右|底]?[方|面|边|部]?(尾页|文末)?[\"|”|\\s+]?(阅读原文|閱讀原文)[\"|”|’]?",
			"点击[上|下|左|右][方|面|边]的?[,|\\s+]?[\"|”|\\s+]?(阅读|查看)?原文(阅读|查看)?[\"|”|’]?",
			"(点击)?[↙|▼|↑|↓| ↙ |【]+[上|下|左|右]?[方|面]?阅读原文[↙|▼|↑|↓| ↙ |】]?",
			"猛戳阅读原文观看视频|更\\.多\\.内\\.容|免\\.费\\.订\\.阅",
			"(点|猛)击?(本文|微信)?(左|右|最)?(上|下)?(角|方|面)?([【|(\\s+|“\")]?阅读(原|全)文[】|(\\s?”\")]?|.*关注|.*订阅)",
			"点击[上|下]方.*(阅读|欣赏)[全|原]文", "点击[上|下]方.*(了解|查看)更多",
			"(赶紧|赶快)点击.*[\\[|【]?(阅读|欣赏)[全|原]文[\\]|】]?", "点(击)?阅读原文.*马上参加",
			"(左|右|最)?(上|下)?角[\"|“|‘|\"|”|\\s+]?阅读原文[\"|”|’|\"|“]?",
			"(点击|戳)文末(.*)?阅读原文", "公众号(.*)?关注",  "推荐您?关注[：|:]",
			"关注[\"|“|‘](.*)?[\"|”|’]", "更多精彩内容[,|，|\\s*]请关注[：|:][a-zA-Z0-9]+",
			"点击(题目|标题)?[下|上]方?.*?关注(.*)(动态)?",
			"温馨提示[：|:]长按微信号(.*)?复制后(.*)?粘贴(.*)?关注",
			"(关注后)?回复.*(查(询|看)|免费(赠|获取))",
			"(抓紧|赶快|速度)(.*)?关注(本平台|平台).*回复.*获取答案", "感谢您关注", "扫一扫(.*)?(关注)?",
			"马上关注[:|：]?", "欢迎关注", "看完点击上方的蓝字.*找好玩视频",
			"[點|点][击|擊]?(本文)?(标题)?[下|上][方|面].*?[藍|蓝]色?小?字体?(即可)?(快速)?[关|關]?注?",
			"点击(本文)?(上|下|左|右|)?(方|面).*字体", "网[址|站][：|:]?([\\w|-]+\\.?)+",
			"官方网[址|站][：|:]?http://([\\w|-]+\\.?)+/",
			"官方?网站?[：|:|（]?([\\w]+\\.?)+", "咨询热线[：|:]?[0-9]+",
			"QQ[：|:|\\s*]?[0-9]+", "商家合作热线[：|:][0-9]+",
			"联系人[：|:](.*)?联系电话[：|:][0-9-]+", "定价.*团购.*购[书|买]?电话[：|:]?[0-9]+",
			"联系电话[：|:][0-9]+咨询\\s*Q\\s*Q[：|:][0-9]+",
			"购买(.*)?请?电话联系[：|:][0-9]+(.*)?(免费)?送货",
			"联系(我们)?电话[：|:][0-9]+[,|，|\\s*]?QQ[：|:]\\s*[0-9]+",
			"联系方式[：|:](.*)?[\\(|\\（]微信号[\\）|\\)][：|:][a-zA-Z0-9]+",
			"联系方式[：|:](.*)?QQ[\\(|\\（]总群[\\)|\\）]?[：|:][a-zA-Z0-9]+",
			"电话(咨询)?[：|:]?[0-9-]+[.]?\\s*手机(咨询)?[：|:]?[0-9-]+[.]?\\s*",
			"【?活动时间】?[：|:].*?【?活动地点】?[：|:].*?【?微信报名】?[：|:]",
			"回复(.*)?QQ群[：|:][0-9]+(.*)?投稿邮箱[：|:]\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*(版权说明)?",
			"发?送?(电子)?(信箱|邮件)到?\\s*[：|:]?\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*",
			"联系邮箱[：|:]\\d+@\\w+\\.\\w+", "报名热线[:|：]", "我们的邮箱是\\d+@\\w+\\.\\w+",
			"(电话)?(：|:)\\d{7,11}|(热线|传真|电话)(：|:|\\s)\\d{3,4}-\\d{7,8}",
			"(咨询|联系)电话[:|：]?[0-9]{8,12}",
			"(QQ群|微信号|联系方式)(.*)?[：|:]?[a-zA-Z0-9]+", "回复[\"|“|‘].*了解",
			"回复【[0-9]+】[：|:]", "[\\(|\\（]回复[\"|“|‘][0-9]+[\"|”|’][\\)|\\）]",
			"(赶紧|抓紧|赶快|速度)*关注[我|本平台|平台].*回复.*获取答案", "回复(.*)?(即可|了解|阅读)",
			"关注[\"|“|‘](.*)?[\"|”|’]回复", "分享转发以上账号(.*)?加入",
			"点击?[上|下|左|右][方|面](.*)?(一键)?关注本?账号", "热门平台推荐[：|:]", "热门话题，点击查看",
			"(记得)?点击[左|右]?[上|下]?角.*分享.*", "点击?[上|下|左|右][方|面][↙|▼|↑|↓]+",
			"请点击?[上|下|左|右]", "点击原文(链接)?查看", "(·)+广告(·)+", 
			"【(温馨提示|[0-9])】",
			"新浪(官微|微博)[：|:]?(.*)?关注", "欢迎您?转载.*?分享到朋友圈.*?推荐(给您的)?朋友",
			"请?(分享朋友圈|留言|.*发微信)|分享.*朋友圈",
			"(本文内容|文章)来(源|自)于?网络[,|，]?(\\s*)?版权归原作者",
			"发起.*活动[,|，]?.*通过.*形式.*发送给?小编.*[快来|快快]?参与",
			"资讯和?优惠活动信息[：|:|,|，]?(\\s*)?详情请?咨询[：|:]?[0-9_]+",
			"(复制|搜索)[\"|“|‘][a-zA-Z0-9_-]+[\"|”|’][,|，]?在[\"|“|‘]添加朋友[\"|”|’]中粘贴搜索号码关注",
			"(.*)?乳此(.*)$", "那就和[小|本]编(一起)?[来]?学[习]?.*?吧",
			"以上是[小|本]?编(为大家)?挑选(.*)最火(.*)", "别私(自保)?存", "【\\w+】", "[↓↑]{3,}",
			"记得要升级\\d?\\.?\\d*", "咨询.*客服", "生活在.*爱上.*品牌",
			"图文版权归原作者所有·如有侵权请联系删除|最火微信榜单|图文来源于网络，版权归原作者所有|想知道答案吗？给自己5分钟时间思考",
			"感谢(您|你)的阅读.*喜欢.*的话.*点个大拇指", "微话题.*", "(小编送福利|点击)(.*)?100%有",
			"中国整体衣柜.*财富之旅", "每天都有分享", "- (THE)? END -", "查看往期精彩内容", "文章推荐",
			"发送[\"|“|‘](.*)?[\"|”|’]查看", "↓精彩继续↓", "喜欢此文请点赞↓", "输入(.*)?可浏览",
			"查看历史消息", "往期回顾[：|:]?", "(保留)?(活动最终解释|版)权(归.*所有)?",
			"(欢迎|谢谢)[您|你]?的?(加入|参与)", "[如|若]有侵权，请联系(.*)?删除",
			"[图|本]?文?章?(.*)?[来|转][自|源](.*)?网络(.*)?如有侵权(.*)?(联系|通知)",
			"[↓|↑|]{3,}" };

}
